Autogenerated HTML docs for v2.10.0-129-g35f6 
diff --git a/RelNotes/2.11.0.txt b/RelNotes/2.11.0.txt new file mode 100644 index 0000000..6bb69db --- /dev/null +++ b/RelNotes/2.11.0.txt 
@@ -0,0 +1,97 @@ +Git 2.11 Release Notes +====================== + +Updates since v2.10 +------------------- + +UI, Workflows & Features + + * "git format-patch --cover-letter HEAD^" to format a single patch + with a separate cover letter now numbers the output as [PATCH 0/1] + and [PATCH 1/1] by default. + + * An incoming "git push" that attempts to push too many bytes can now + be rejected by setting a new configuration variable at the receiving + end. + + * "git nosuchcommand --help" said "No manual entry for gitnosuchcommand", + which was not intuitive, given that "git nosuchcommand" said "git: + 'nosuchcommand' is not a git command". + + * "git clone --resurse-submodules --reference $path $URL" is a way to + reduce network transfer cost by borrowing objects in an existing + $path repository when cloning the superproject from $URL; it + learned to also peek into $path for presense of corresponding + repositories of submodules and borrow objects from there when able. + + * The "git diff --submodule={short,log}" mechanism has been enhanced + to allow "--submodule=diff" to show the patch between the submodule + commits bound to the superproject. + + +Performance, Internal Implementation, Development Support etc. + + * The delta-base-cache mechanism has been a key to the performance in + a repository with a tightly packed packfile, but it did not scale + well even with a larger value of core.deltaBaseCacheLimit. + + * Enhance "git status --porcelain" output by collecting more data on + the state of the index and the working tree files, which may + further be used to teach git-prompt (in contrib/) to make fewer + calls to git. + + * Extract a small helper out of the function that reads the authors + script file "git am" internally uses. + (merge a77598e jc/am-read-author-file later to maint). + + +Also contains various documentation updates and code clean-ups. + + +Fixes since v2.10 +----------------- + +Unless otherwise noted, all the fixes since v2.9 in the maintenance +track are contained in this release (see the maintenance releases' +notes for details). + + * Clarify various ways to specify the "revision ranges" in the + documentation. + (merge a117be4 po/range-doc later to maint). + + * "diff-highlight" script (in contrib/) learned to work better with + "git log -p --graph" output. + (merge 3dbfe2b bh/diff-highlight-graph later to maint). + + * The test framework left the number of tests and success/failure + count in the t/test-results directory, keyed by the name of the + test script plus the process ID. The latter however turned out not + to serve any useful purpose. The process ID part of the filename + has been removed. + (merge 5c885c1 jk/test-lib-drop-pid-from-results later to maint). + + * Having a submodule whose ".git" repository is somehow corrupt + caused a few commands that recurse into submodules loop forever. + (merge 10f5c52 jc/submodule-anchor-git-dir later to maint). + + * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but + the resulting repository becomes an invalid one. Teach the command + to forbid removal of HEAD. + (merge 12cfa79 jc/forbid-symbolic-ref-d-HEAD later to maint). + + * A test spawned a short-lived background process, which sometimes + prevented the test directory from getting removed at the end of the + script on some platforms. + (merge 5babb5b js/t6026-clean-up later to maint). + + * Update a few tests that used to use GIT_CURL_VERBOSE to use the + newer GIT_TRACE_CURL. + (merge 14e2411 ep/use-git-trace-curl-in-tests later to maint). + + * Other minor doc, test and build updates and code cleanups. + (merge 3e1952e jk/squelch-false-warning-from-gcc-o3 later to maint). + (merge ca2baa3 rs/compat-strdup later to maint). + (merge d233097 rs/hex2chr later to maint). + (merge c00bfc9 js/t9903-chaining later to maint). + (merge 5e4e5bb sb/xdiff-remove-unused-static-decl later to maint). + (merge 5cb5fe4 sb/transport-report-missing-submodule-on-stderr later to maint). 
diff --git a/RelNotes/2.9.4.txt b/RelNotes/2.9.4.txt new file mode 100644 index 0000000..01e8642 --- /dev/null +++ b/RelNotes/2.9.4.txt 
@@ -0,0 +1,83 @@ +Git v2.9.4 Release Notes +======================== + +Fixes since v2.9.3 +------------------ + + * There are certain house-keeping tasks that need to be performed at + the very beginning of any Git program, and programs that are not + built-in commands had to do them exactly the same way as "git" + potty does. It was easy to make mistakes in one-off standalone + programs (like test helpers). A common "main()" function that + calls cmd_main() of individual program has been introduced to + make it harder to make mistakes. + + * "git merge" with renormalization did not work well with + merge-recursive, due to "safer crlf" conversion kicking in when it + shouldn't. + + * The reflog output format is documented better, and a new format + --date=unix to report the seconds-since-epoch (without timezone) + has been added. + + * "git push --force-with-lease" already had enough logic to allow + ensuring that such a push results in creation of a ref (i.e. the + receiving end did not have another push from sideways that would be + discarded by our force-pushing), but didn't expose this possibility + to the users. It does so now. + + * "import-tars" fast-import script (in contrib/) used to ignore a + hardlink target and replaced it with an empty file, which has been + corrected to record the same blob as the other file the hardlink is + shared with. + + * "git mv dir non-existing-dir/" did not work in some environments + the same way as existing mainstream platforms. The code now moves + "dir" to "non-existing-dir", without relying on rename("A", "B/") + that strips the trailing slash of '/'. + + * The "t/" hierarchy is prone to get an unusual pathname; "make test" + has been taught to make sure they do not contain paths that cannot + be checked out on Windows (and the mechanism can be reusable to + catch pathnames that are not portable to other platforms as need + arises). + + * When "git merge-recursive" works on history with many criss-cross + merges in "verbose" mode, the names the command assigns to the + virtual merge bases could have overwritten each other by unintended + reuse of the same piece of memory. + + * "git checkout --detach <branch>" used to give the same advice + message as that is issued when "git checkout <tag>" (or anything + that is not a branch name) is given, but asking with "--detach" is + an explicit enough sign that the user knows what is going on. The + advice message has been squelched in this case. + + * "git difftool" by default ignores the error exit from the backend + commands it spawns, because often they signal that they found + differences by exiting with a non-zero status code just like "diff" + does; the exit status codes 126 and above however are special in + that they are used to signal that the command is not executable, + does not exist, or killed by a signal. "git difftool" has been + taught to notice these exit status codes. + + * On Windows, help.browser configuration variable used to be ignored, + which has been corrected. + + * The "git -c var[=val] cmd" facility to append a configuration + variable definition at the end of the search order was described in + git(1) manual page, but not in git-config(1), which was more likely + place for people to look for when they ask "can I make a one-shot + override, and if so how?" + + * The tempfile (hence its user lockfile) API lets the caller to open + a file descriptor to a temporary file, write into it and then + finalize it by first closing the filehandle and then either + removing or renaming the temporary file. When the process spawns a + subprocess after obtaining the file descriptor, and if the + subprocess has not exited when the attempt to remove or rename is + made, the last step fails on Windows, because the subprocess has + the file descriptor still open. Open tempfile with O_CLOEXEC flag + to avoid this (on Windows, this is mapped to O_NOINHERIT). + +Also contains minor documentation updates and code clean-ups. 
diff --git a/config.txt b/config.txt index 0bcb679..32f065c 100644 --- a/config.txt +++ b/config.txt 
@@ -2517,6 +2517,12 @@ 	especially on slow filesystems. If not set, the value of 	`transfer.unpackLimit` is used instead.   +receive.maxInputSize:: +	If the size of the incoming pack stream is larger than this +	limit, then git-receive-pack will error out, instead of +	accepting the pack file. If not set or set to 0, then the size +	is unlimited. +  receive.denyDeletes:: 	If set to true, git-receive-pack will deny a ref update that deletes 	the ref. Use this to prevent such a ref deletion via a push. @@ -2847,6 +2853,18 @@ 	in parallel. A value of 0 will give some reasonable default. 	If unset, it defaults to 1.   +submodule.alternateLocation:: +	Specifies how the submodules obtain alternates when submodules are +	cloned. Possible values are `no`, `superproject`. +	By default `no` is assumed, which doesn't add references. When the +	value is set to `superproject` the submodule to be cloned computes +	its alternates location relative to the superprojects alternate. + +submodule.alternateErrorStrategy +	Specifies how to treat errors with the alternates for a submodule +	as computed via `submodule.alternateLocation`. Possible values are +	`ignore`, `info`, `die`. Default is `die`. +  tag.forceSignAnnotated:: 	A boolean to specify whether annotated tags created should be GPG signed. 	If `--annotate` is specified on the command line, it takes 
diff --git a/diff-config.txt b/diff-config.txt index d5a5b17..0eded24 100644 --- a/diff-config.txt +++ b/diff-config.txt 
@@ -122,10 +122,11 @@    diff.submodule:: 	Specify the format in which differences in submodules are -	shown. The "log" format lists the commits in the range like -	linkgit:git-submodule[1] `summary` does. The "short" format -	format just shows the names of the commits at the beginning -	and end of the range. Defaults to short. +	shown. The "short" format just shows the names of the commits +	at the beginning and end of the range. The "log" format lists +	the commits in the range like linkgit:git-submodule[1] `summary` +	does. The "diff" format shows an inline diff of the changed +	contents of the submodule. Defaults to "short".    diff.wordRegex:: 	A POSIX Extended Regular Expression used to determine what is a "word" 
diff --git a/diff-options.txt b/diff-options.txt index 705a873..7805a0c 100644 --- a/diff-options.txt +++ b/diff-options.txt 
@@ -210,13 +210,16 @@ 	of the `--diff-filter` option on what the status letters mean.    --submodule[=<format>]:: -	Specify how differences in submodules are shown. When `--submodule` -	or `--submodule=log` is given, the 'log' format is used. This format lists -	the commits in the range like linkgit:git-submodule[1] `summary` does. -	Omitting the `--submodule` option or specifying `--submodule=short`, -	uses the 'short' format. This format just shows the names of the commits -	at the beginning and end of the range. Can be tweaked via the -	`diff.submodule` configuration variable. +	Specify how differences in submodules are shown. When specifying +	`--submodule=short` the 'short' format is used. This format just +	shows the names of the commits at the beginning and end of the range. +	When `--submodule` or `--submodule=log` is specified, the 'log' +	format is used. This format lists the commits in the range like +	linkgit:git-submodule[1] `summary` does. When `--submodule=diff` +	is specified, the 'diff' format is used. This format shows an +	inline diff of the changes in the submodule contents between the +	commit range. Defaults to `diff.submodule` or the 'short' format +	if the config option is unset.    --color[=<when>]:: 	Show colored diff. @@ -569,5 +572,8 @@  --no-prefix:: 	Do not show any source or destination prefix.   +--line-prefix=<prefix>:: +	Prepend an additional prefix to every line of output. +  For more detailed explanation on these common options, see also  linkgit:gitdiffcore[7]. 
diff --git a/git-clone.html b/git-clone.html index 1c88116..6ec7310 100644 --- a/git-clone.html +++ b/git-clone.html 
@@ -848,7 +848,7 @@  objects from the source repository into a pack in the cloned repository.</p></div>   </dd>   <dt class="hdlist1">  ---reference &lt;repository&gt;  +--reference[-if-able] &lt;repository&gt;   </dt>   <dd>   <p>  @@ -858,6 +858,9 @@  an already existing repository as an alternate will   require fewer objects to be copied from the repository   being cloned, reducing network and local storage costs.  + When using the <code>--reference-if-able</code>, a non existing  + directory is skipped with a warning instead of aborting  + the clone.   </p>   <div class="paragraph"><p><strong>NOTE</strong>: see the NOTE for the <code>--shared</code> option, and also the   <code>--dissociate</code> option.</p></div>  @@ -1314,7 +1317,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2016-07-06 14:33:48 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/git-clone.txt b/git-clone.txt index ec41d3d..e316c4b 100644 --- a/git-clone.txt +++ b/git-clone.txt 
@@ -90,13 +90,16 @@  its source repository, you can simply run `git repack -a` to copy all  objects from the source repository into a pack in the cloned repository.   ---reference <repository>:: +--reference[-if-able] <repository>:: 	If the reference repository is on the local machine, 	automatically setup `.git/objects/info/alternates` to 	obtain objects from the reference repository. Using 	an already existing repository as an alternate will 	require fewer objects to be copied from the repository 	being cloned, reducing network and local storage costs. +	When using the `--reference-if-able`, a non existing +	directory is skipped with a warning instead of aborting +	the clone.  +  *NOTE*: see the NOTE for the `--shared` option, and also the  `--dissociate` option. 
diff --git a/git-config.html b/git-config.html index 67933d9..01854ac 100644 --- a/git-config.html +++ b/git-config.html 
@@ -3458,10 +3458,11 @@  <dd>   <p>   Specify the format in which differences in submodules are  - shown. The "log" format lists the commits in the range like  - <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. The "short" format  - format just shows the names of the commits at the beginning  - and end of the range. Defaults to short.  + shown. The "short" format just shows the names of the commits  + at the beginning and end of the range. The "log" format lists  + the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code>  + does. The "diff" format shows an inline diff of the changed  + contents of the submodule. Defaults to "short".   </p>   </dd>   <dt class="hdlist1">  @@ -6315,6 +6316,17 @@  </p>   </dd>   <dt class="hdlist1">  +receive.maxInputSize  +</dt>  +<dd>  +<p>  + If the size of the incoming pack stream is larger than this  + limit, then git-receive-pack will error out, instead of  + accepting the pack file. If not set or set to 0, then the size  + is unlimited.  +</p>  +</dd>  +<dt class="hdlist1">   receive.denyDeletes   </dt>   <dd>  @@ -6956,6 +6968,24 @@  </p>   </dd>   <dt class="hdlist1">  +submodule.alternateLocation  +</dt>  +<dd>  +<p>  + Specifies how the submodules obtain alternates when submodules are  + cloned. Possible values are <code>no</code>, <code>superproject</code>.  + By default <code>no</code> is assumed, which doesn&#8217;t add references. When the  + value is set to <code>superproject</code> the submodule to be cloned computes  + its alternates location relative to the superprojects alternate.  +</p>  +</dd>  +</dl></div>  +<div class="paragraph"><p>submodule.alternateErrorStrategy  + Specifies how to treat errors with the alternates for a submodule  + as computed via <code>submodule.alternateLocation</code>. Possible values are  + <code>ignore</code>, <code>info</code>, <code>die</code>. Default is <code>die</code>.</p></div>  +<div class="dlist"><dl>  +<dt class="hdlist1">   tag.forceSignAnnotated   </dt>   <dd>  
diff --git a/git-diff-files.html b/git-diff-files.html index 3173380..d47af64 100644 --- a/git-diff-files.html +++ b/git-diff-files.html 
@@ -1087,13 +1087,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -1658,6 +1661,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-diff-index.html b/git-diff-index.html index b80e9c2..8837587 100644 --- a/git-diff-index.html +++ b/git-diff-index.html 
@@ -1088,13 +1088,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -1659,6 +1662,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-diff-tree.html b/git-diff-tree.html index 3d02559..fd7a704 100644 --- a/git-diff-tree.html +++ b/git-diff-tree.html 
@@ -1089,13 +1089,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -1660,6 +1663,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  @@ -2377,7 +2388,7 @@  </li>   <li>   <p>  -<em>%m</em>: left, right or boundary mark  +<em>%m</em>: left (<code>&lt;</code>), right (<code>&gt;</code>) or boundary (<code>-</code>) mark   </p>   </li>   <li>  
diff --git a/git-diff.html b/git-diff.html index bc690f9..7213157 100644 --- a/git-diff.html +++ b/git-diff.html 
@@ -1195,13 +1195,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -1769,6 +1772,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-format-patch.html b/git-format-patch.html index b51c1f8..db58095 100644 --- a/git-format-patch.html +++ b/git-format-patch.html 
@@ -1378,6 +1378,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-index-pack.html b/git-index-pack.html index 134d393..93fbad2 100644 --- a/git-index-pack.html +++ b/git-index-pack.html 
@@ -881,6 +881,14 @@  and use maximum 3 threads.   </p>   </dd>  +<dt class="hdlist1">  +--max-input-size=&lt;size&gt;  +</dt>  +<dd>  +<p>  + Die, if the pack is larger than &lt;size&gt;.  +</p>  +</dd>   </dl></div>   </div>   </div>  @@ -905,7 +913,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2013-08-20 08:40:27 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/git-index-pack.txt b/git-index-pack.txt index 7a4e055..1b4b65d 100644 --- a/git-index-pack.txt +++ b/git-index-pack.txt 
@@ -87,6 +87,8 @@ 	Specifying 0 will cause Git to auto-detect the number of CPU's 	and use maximum 3 threads.   +--max-input-size=<size>:: +	Die, if the pack is larger than <size>.    Note  ---- 
diff --git a/git-log.html b/git-log.html index 140f6f8..a1a40df 100644 --- a/git-log.html +++ b/git-log.html 
@@ -1303,7 +1303,7 @@  </dt>   <dd>   <p>  - List only commits on the respective side of a symmetric range,  + List only commits on the respective side of a symmetric difference,   i.e. only those which would be marked <code>&lt;</code> resp. <code>&gt;</code> by   <code>--left-right</code>.   </p>  @@ -2107,7 +2107,7 @@  </dt>   <dd>   <p>  - Mark which side of a symmetric diff a commit is reachable from.  + Mark which side of a symmetric difference a commit is reachable from.   Commits from the left side are prefixed with <code>&lt;</code> and those from   the right with <code>&gt;</code>. If combined with <code>--boundary</code>, those   commits are prefixed with <code>-</code>.  @@ -2644,7 +2644,7 @@  </li>   <li>   <p>  -<em>%m</em>: left, right or boundary mark  +<em>%m</em>: left (<code>&lt;</code>), right (<code>&gt;</code>) or boundary (<code>-</code>) mark   </p>   </li>   <li>  @@ -3092,13 +3092,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -3647,6 +3650,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-receive-pack.html b/git-receive-pack.html index c2682f0..85a3acb 100644 --- a/git-receive-pack.html +++ b/git-receive-pack.html 
@@ -771,6 +771,8 @@  <div class="paragraph"><p><em>git-receive-pack</em> honours the receive.denyNonFastForwards config   option, which tells it if updates to a ref should be denied if they   are not fast-forwards.</p></div>  +<div class="paragraph"><p>A number of other receive.* config options are available to tweak  +its behavior, see <a href="git-config.html">git-config(1)</a>.</p></div>   </div>   </div>   <div class="sect1">  @@ -1042,7 +1044,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2015-03-23 14:31:16 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/git-receive-pack.txt b/git-receive-pack.txt index 000ee8d..0ccd5fb 100644 --- a/git-receive-pack.txt +++ b/git-receive-pack.txt 
@@ -33,6 +33,9 @@  option, which tells it if updates to a ref should be denied if they  are not fast-forwards.   +A number of other receive.* config options are available to tweak +its behavior, see linkgit:git-config[1]. +  OPTIONS  -------  <directory>:: 
diff --git a/git-rev-list.html b/git-rev-list.html index c6cb249..c43515f 100644 --- a/git-rev-list.html +++ b/git-rev-list.html 
@@ -1246,7 +1246,7 @@  </dt>   <dd>   <p>  - List only commits on the respective side of a symmetric range,  + List only commits on the respective side of a symmetric difference,   i.e. only those which would be marked <code>&lt;</code> resp. <code>&gt;</code> by   <code>--left-right</code>.   </p>  @@ -2161,7 +2161,7 @@  </dt>   <dd>   <p>  - Mark which side of a symmetric diff a commit is reachable from.  + Mark which side of a symmetric difference a commit is reachable from.   Commits from the left side are prefixed with <code>&lt;</code> and those from   the right with <code>&gt;</code>. If combined with <code>--boundary</code>, those   commits are prefixed with <code>-</code>.  @@ -2647,7 +2647,7 @@  </li>   <li>   <p>  -<em>%m</em>: left, right or boundary mark  +<em>%m</em>: left (<code>&lt;</code>), right (<code>&gt;</code>) or boundary (<code>-</code>) mark   </p>   </li>   <li>  
diff --git a/git-rev-parse.html b/git-rev-parse.html index 7ddf0ba..90fb3f4 100644 --- a/git-rev-parse.html +++ b/git-rev-parse.html 
@@ -1581,42 +1581,88 @@  <h2 id="_specifying_ranges">SPECIFYING RANGES</h2>   <div class="sectionbody">   <div class="paragraph"><p>History traversing commands such as <code>git log</code> operate on a set  -of commits, not just a single commit. To these commands,  -specifying a single revision with the notation described in the  -previous section means the set of commits reachable from that  -commit, following the commit ancestry chain.</p></div>  -<div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>  -notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable  -from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>  -<div class="paragraph"><p>This set operation appears so often that there is a shorthand  -for it. When you have two commits <em>r1</em> and <em>r2</em> (named according  -to the syntax explained in SPECIFYING REVISIONS above), you can ask  -for commits that are reachable from r2 excluding those that are reachable  -from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>  -<div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference  -of <em>r1</em> and <em>r2</em> and is defined as  -<em>r1 r2 --not $(git merge-base --all r1 r2)</em>.  -It is the set of commits that are reachable from either one of  -<em>r1</em> or <em>r2</em> but not from both.</p></div>  -<div class="paragraph"><p>In these two shorthands, you can omit one end and let it default to HEAD.  +of commits, not just a single commit.</p></div>  +<div class="paragraph"><p>For these commands,  +specifying a single revision, using the notation described in the  +previous section, means the set of commits <code>reachable</code> from the given  +commit.</p></div>  +<div class="paragraph"><p>A commit&#8217;s reachable set is the commit itself and the commits in  +its ancestry chain.</p></div>  +<div class="sect2">  +<h3 id="_commit_exclusions">Commit Exclusions</h3>  +<div class="dlist"><dl>  +<dt class="hdlist1">  +<em>&#94;&lt;rev&gt;</em> (caret) Notation  +</dt>  +<dd>  +<p>  + To exclude commits reachable from a commit, a prefix <em>&#94;</em>  + notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable  + from <em>r2</em> but exclude the ones reachable from <em>r1</em> (i.e. <em>r1</em> and  + its ancestors).  +</p>  +</dd>  +</dl></div>  +</div>  +<div class="sect2">  +<h3 id="_dotted_range_notations">Dotted Range Notations</h3>  +<div class="dlist"><dl>  +<dt class="hdlist1">  +The <em>..</em> (two-dot) Range Notation  +</dt>  +<dd>  +<p>  + The <em>&#94;r1 r2</em> set operation appears so often that there is a shorthand  + for it. When you have two commits <em>r1</em> and <em>r2</em> (named according  + to the syntax explained in SPECIFYING REVISIONS above), you can ask  + for commits that are reachable from r2 excluding those that are reachable  + from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.  +</p>  +</dd>  +<dt class="hdlist1">  +The <em>&#8230;</em> (three dot) Symmetric Difference Notation  +</dt>  +<dd>  +<p>  + A similar notation <em>r1...r2</em> is called symmetric difference  + of <em>r1</em> and <em>r2</em> and is defined as  + <em>r1 r2 --not $(git merge-base --all r1 r2)</em>.  + It is the set of commits that are reachable from either one of  + <em>r1</em> (left side) or <em>r2</em> (right side) but not from both.  +</p>  +</dd>  +</dl></div>  +<div class="paragraph"><p>In these two shorthand notations, you can omit one end and let it default to HEAD.   For example, <em>origin..</em> is a shorthand for <em>origin..HEAD</em> and asks "What   did I do since I forked from the origin branch?" Similarly, <em>..origin</em>   is a shorthand for <em>HEAD..origin</em> and asks "What did the origin do since   I forked from them?" Note that <em>..</em> would mean <em>HEAD..HEAD</em> which is an   empty range that is both reachable and unreachable from HEAD.</p></div>  -<div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit  -and its parent commits exist. The <em>r1&#94;@</em> notation means all  -parents of <em>r1</em>. <em>r1&#94;!</em> includes commit <em>r1</em> but excludes  -all of its parents.</p></div>  -<div class="paragraph"><p>To summarize:</p></div>  +</div>  +<div class="sect2">  +<h3 id="_other_lt_rev_gt_94_parent_shorthand_notations">Other &lt;rev&gt;&#94; Parent Shorthand Notations</h3>  +<div class="paragraph"><p>Two other shorthands exist, particularly useful for merge commits,  +for naming a set that is formed by a commit and its parent commits.</p></div>  +<div class="paragraph"><p>The <em>r1&#94;@</em> notation means all parents of <em>r1</em>.</p></div>  +<div class="paragraph"><p>The <em>r1&#94;!</em> notation includes commit <em>r1</em> but excludes all of its parents.  +By itself, this notation denotes the single commit <em>r1</em>.</p></div>  +<div class="paragraph"><p>While <em>&lt;rev&gt;&#94;&lt;n&gt;</em> was about specifying a single commit parent, these  +two notations consider all its parents. For example you can say  +<em>HEAD&#94;2&#94;@</em>, however you cannot say <em>HEAD&#94;@&#94;2</em>.</p></div>  +</div>  +</div>  +</div>  +<div class="sect1">  +<h2 id="_revision_range_summary">Revision Range Summary</h2>  +<div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">   <em>&lt;rev&gt;</em>   </dt>   <dd>   <p>  - Include commits that are reachable from (i.e. ancestors of)  - &lt;rev&gt;.  + Include commits that are reachable from &lt;rev&gt; (i.e. &lt;rev&gt; and its  + ancestors).   </p>   </dd>   <dt class="hdlist1">  @@ -1624,8 +1670,8 @@  </dt>   <dd>   <p>  - Exclude commits that are reachable from (i.e. ancestors of)  - &lt;rev&gt;.  + Exclude commits that are reachable from &lt;rev&gt; (i.e. &lt;rev&gt; and its  + ancestors).   </p>   </dd>   <dt class="hdlist1">  @@ -1669,20 +1715,31 @@  </p>   </dd>   </dl></div>  -<div class="paragraph"><p>Here are a handful of examples:</p></div>  +<div class="paragraph"><p>Here are a handful of examples using the Loeliger illustration above,  +with each step in the notation&#8217;s expansion and selection carefully  +spelt out:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>D G H D  -D F G H I J D F  -^G D H D  -^D B E I J F B  -B..C C  -B...C G H D E B C  -^D B C E I J F B C  -C I J F C  -C^@ I J F  -C^! C  -F^! D G H D F</code></pre>  +<pre><code>Args Expanded arguments Selected commits  +D G H D  +D F G H I J D F  +^G D H D  +^D B E I J F B  +^D B C E I J F B C  +C I J F C  +B..C = ^B C C  +B...C = B ^F C G H D E B C  +C^@ = C^1  + = F I J F  +B^@ = B^1 B^2 B^3  + = D E F D G H E F I J  +C^! = C ^C^@  + = C ^C^1  + = C ^F C  +B^! = B ^B^@  + = B ^B^1 ^B^2 ^B^3  + = B ^D ^E ^F B  +F^! D = F ^I ^J D G H D F</code></pre>   </div></div>   </div>   </div>  
diff --git a/git-show.html b/git-show.html index cc7f26a..b42c94b 100644 --- a/git-show.html +++ b/git-show.html 
@@ -1350,7 +1350,7 @@  </li>   <li>   <p>  -<em>%m</em>: left, right or boundary mark  +<em>%m</em>: left (<code>&lt;</code>), right (<code>&gt;</code>) or boundary (<code>-</code>) mark   </p>   </li>   <li>  @@ -1798,13 +1798,16 @@  </dt>   <dd>   <p>  - Specify how differences in submodules are shown. When <code>--submodule</code>  - or <code>--submodule=log</code> is given, the <em>log</em> format is used. This format lists  - the commits in the range like <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does.  - Omitting the <code>--submodule</code> option or specifying <code>--submodule=short</code>,  - uses the <em>short</em> format. This format just shows the names of the commits  - at the beginning and end of the range. Can be tweaked via the  - <code>diff.submodule</code> configuration variable.  + Specify how differences in submodules are shown. When specifying  + <code>--submodule=short</code> the <em>short</em> format is used. This format just  + shows the names of the commits at the beginning and end of the range.  + When <code>--submodule</code> or <code>--submodule=log</code> is specified, the <em>log</em>  + format is used. This format lists the commits in the range like  + <a href="git-submodule.html">git-submodule(1)</a> <code>summary</code> does. When <code>--submodule=diff</code>  + is specified, the <em>diff</em> format is used. This format shows an  + inline diff of the changes in the submodule contents between the  + commit range. Defaults to <code>diff.submodule</code> or the <em>short</em> format  + if the config option is unset.   </p>   </dd>   <dt class="hdlist1">  @@ -2353,6 +2356,14 @@  Do not show any source or destination prefix.   </p>   </dd>  +<dt class="hdlist1">  +--line-prefix=&lt;prefix&gt;  +</dt>  +<dd>  +<p>  + Prepend an additional prefix to every line of output.  +</p>  +</dd>   </dl></div>   <div class="paragraph"><p>For more detailed explanation on these common options, see also   <a href="gitdiffcore.html">gitdiffcore(7)</a>.</p></div>  
diff --git a/git-status.html b/git-status.html index fa732a5..7f10ecf 100644 --- a/git-status.html +++ b/git-status.html 
@@ -792,7 +792,7 @@  </p>   </dd>   <dt class="hdlist1">  ---porcelain  +--porcelain[=&lt;version&gt;]   </dt>   <dd>   <p>  @@ -801,6 +801,8 @@  across Git versions and regardless of user configuration. See   below for details.   </p>  +<div class="paragraph"><p>The version parameter is used to specify the format version.  +This is optional and defaults to the original version <em>v1</em> format.</p></div>   </dd>   <dt class="hdlist1">   --long  @@ -902,7 +904,7 @@  <dd>   <p>   Terminate entries with NUL, instead of LF. This implies  - the <code>--porcelain</code> output format if no other format is given.  + the <code>--porcelain=v1</code> output format if no other format is given.   </p>   </dd>   <dt class="hdlist1">  @@ -1021,11 +1023,14 @@  -------------------------------------------------</code></pre>   </div></div>   <div class="paragraph"><p>If -b is used the short-format status is preceded by a line</p></div>  -<div class="paragraph"><p>## branchname tracking info</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>## branchname tracking info</code></pre>  +</div></div>   </div>   <div class="sect2">  -<h3 id="_porcelain_format">Porcelain Format</h3>  -<div class="paragraph"><p>The porcelain format is similar to the short format, but is guaranteed  +<h3 id="_porcelain_format_version_1">Porcelain Format Version 1</h3>  +<div class="paragraph"><p>Version 1 porcelain format is similar to the short format, but is guaranteed   not to change in a backwards-incompatible way between Git versions or   based on user configuration. This makes it ideal for parsing by scripts.   The description of the short format above also describes the porcelain  @@ -1054,6 +1059,123 @@  characters are not specially formatted; no quoting or   backslash-escaping is performed.</p></div>   </div>  +<div class="sect2">  +<h3 id="_porcelain_format_version_2">Porcelain Format Version 2</h3>  +<div class="paragraph"><p>Version 2 format adds more detailed information about the state of  +the worktree and changed items. Version 2 also defines an extensible  +set of easy to parse optional headers.</p></div>  +<div class="paragraph"><p>Header lines start with "#" and are added in response to specific  +command line arguments. Parsers should ignore headers they  +don&#8217;t recognize.</p></div>  +<div class="paragraph"><p># Branch Headers</p></div>  +<div class="paragraph"><p>If <code>--branch</code> is given, a series of header lines are printed with  +information about the current branch.</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>Line Notes  +------------------------------------------------------------  +# branch.oid &lt;commit&gt; | (initial) Current commit.  +# branch.head &lt;branch&gt; | (detached) Current branch.  +# branch.upstream &lt;upstream_branch&gt; If upstream is set.  +# branch.ab +&lt;ahead&gt; -&lt;behind&gt; If upstream is set and  + the commit is present.  +------------------------------------------------------------</code></pre>  +</div></div>  +<div class="paragraph"><p># Changed Tracked Entries</p></div>  +<div class="paragraph"><p>Following the headers, a series of lines are printed for tracked  +entries. One of three different line formats may be used to describe  +an entry depending on the type of change. Tracked entries are printed  +in an undefined order; parsers should allow for a mixture of the 3  +line types in any order.</p></div>  +<div class="paragraph"><p>Ordinary changed entries have the following format:</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>1 &lt;XY&gt; &lt;sub&gt; &lt;mH&gt; &lt;mI&gt; &lt;mW&gt; &lt;hH&gt; &lt;hI&gt; &lt;path&gt;</code></pre>  +</div></div>  +<div class="paragraph"><p>Renamed or copied entries have the following format:</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>2 &lt;XY&gt; &lt;sub&gt; &lt;mH&gt; &lt;mI&gt; &lt;mW&gt; &lt;hH&gt; &lt;hI&gt; &lt;X&gt;&lt;score&gt; &lt;path&gt;&lt;sep&gt;&lt;origPath&gt;</code></pre>  +</div></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>Field Meaning  +--------------------------------------------------------  +&lt;XY&gt; A 2 character field containing the staged and  + unstaged XY values described in the short format,  + with unchanged indicated by a "." rather than  + a space.  +&lt;sub&gt; A 4 character field describing the submodule state.  + "N..." when the entry is not a submodule.  + "S&lt;c&gt;&lt;m&gt;&lt;u&gt;" when the entry is a submodule.  + &lt;c&gt; is "C" if the commit changed; otherwise ".".  + &lt;m&gt; is "M" if it has tracked changes; otherwise ".".  + &lt;u&gt; is "U" if there are untracked changes; otherwise ".".  +&lt;mH&gt; The octal file mode in HEAD.  +&lt;mI&gt; The octal file mode in the index.  +&lt;mW&gt; The octal file mode in the worktree.  +&lt;hH&gt; The object name in HEAD.  +&lt;hI&gt; The object name in the index.  +&lt;X&gt;&lt;score&gt; The rename or copy score (denoting the percentage  + of similarity between the source and target of the  + move or copy). For example "R100" or "C75".  +&lt;path&gt; The pathname. In a renamed/copied entry, this  + is the path in the index and in the working tree.  +&lt;sep&gt; When the `-z` option is used, the 2 pathnames are separated  + with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)  + byte separates them.  +&lt;origPath&gt; The pathname in the commit at HEAD. This is only  + present in a renamed/copied entry, and tells  + where the renamed/copied contents came from.  +--------------------------------------------------------</code></pre>  +</div></div>  +<div class="paragraph"><p>Unmerged entries have the following format; the first character is  +a "u" to distinguish from ordinary changed entries.</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>u &lt;xy&gt; &lt;sub&gt; &lt;m1&gt; &lt;m2&gt; &lt;m3&gt; &lt;mW&gt; &lt;h1&gt; &lt;h2&gt; &lt;h3&gt; &lt;path&gt;</code></pre>  +</div></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>Field Meaning  +--------------------------------------------------------  +&lt;XY&gt; A 2 character field describing the conflict type  + as described in the short format.  +&lt;sub&gt; A 4 character field describing the submodule state  + as described above.  +&lt;m1&gt; The octal file mode in stage 1.  +&lt;m2&gt; The octal file mode in stage 2.  +&lt;m3&gt; The octal file mode in stage 3.  +&lt;mW&gt; The octal file mode in the worktree.  +&lt;h1&gt; The object name in stage 1.  +&lt;h2&gt; The object name in stage 2.  +&lt;h3&gt; The object name in stage 3.  +&lt;path&gt; The pathname.  +--------------------------------------------------------</code></pre>  +</div></div>  +<div class="paragraph"><p># Other Items</p></div>  +<div class="paragraph"><p>Following the tracked entries (and if requested), a series of  +lines will be printed for untracked and then ignored items  +found in the worktree.</p></div>  +<div class="paragraph"><p>Untracked items have the following format:</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>? &lt;path&gt;</code></pre>  +</div></div>  +<div class="paragraph"><p>Ignored items have the following format:</p></div>  +<div class="literalblock">  +<div class="content">  +<pre><code>! &lt;path&gt;</code></pre>  +</div></div>  +<div class="paragraph"><p># Pathname Format Notes and -z</p></div>  +<div class="paragraph"><p>When the <code>-z</code> option is given, pathnames are printed as is and  +without any quoting and lines are terminated with a NUL (ASCII 0x00)  +byte.</p></div>  +<div class="paragraph"><p>Otherwise, all pathnames will be "C-quoted" if they contain any tab,  +linefeed, double quote, or backslash characters. In C-quoting, these  +characters will be replaced with the corresponding C-style escape  +sequences and the resulting pathname will be double quoted.</p></div>  +</div>   </div>   </div>   <div class="sect1">  @@ -1094,7 +1216,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2015-10-05 13:38:43 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/git-status.txt b/git-status.txt index e1e8f57..725065e 100644 --- a/git-status.txt +++ b/git-status.txt 
@@ -32,11 +32,14 @@  --branch:: 	Show the branch and tracking info even in short-format.   ---porcelain:: +--porcelain[=<version>]:: 	Give the output in an easy-to-parse format for scripts. 	This is similar to the short output, but will remain stable 	across Git versions and regardless of user configuration. See 	below for details. ++ +The version parameter is used to specify the format version. +This is optional and defaults to the original version 'v1' format.    --long:: 	Give the output in the long-format. This is the default. @@ -96,7 +99,7 @@    -z:: 	Terminate entries with NUL, instead of LF. This implies -	the `--porcelain` output format if no other format is given. +	the `--porcelain=v1` output format if no other format is given.    --column[=<options>]::  --no-column:: @@ -180,12 +183,12 @@    If -b is used the short-format status is preceded by a line   -## branchname tracking info + ## branchname tracking info   -Porcelain Format -~~~~~~~~~~~~~~~~ +Porcelain Format Version 1 +~~~~~~~~~~~~~~~~~~~~~~~~~~   -The porcelain format is similar to the short format, but is guaranteed +Version 1 porcelain format is similar to the short format, but is guaranteed  not to change in a backwards-incompatible way between Git versions or  based on user configuration. This makes it ideal for parsing by scripts.  The description of the short format above also describes the porcelain @@ -207,6 +210,124 @@  characters are not specially formatted; no quoting or  backslash-escaping is performed.   +Porcelain Format Version 2 +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Version 2 format adds more detailed information about the state of +the worktree and changed items. Version 2 also defines an extensible +set of easy to parse optional headers. + +Header lines start with "#" and are added in response to specific +command line arguments. Parsers should ignore headers they +don't recognize. + +### Branch Headers + +If `--branch` is given, a series of header lines are printed with +information about the current branch. + + Line Notes + ------------------------------------------------------------ + # branch.oid <commit> | (initial) Current commit. + # branch.head <branch> | (detached) Current branch. + # branch.upstream <upstream_branch> If upstream is set. + # branch.ab +<ahead> -<behind> If upstream is set and + the commit is present. + ------------------------------------------------------------ + +### Changed Tracked Entries + +Following the headers, a series of lines are printed for tracked +entries. One of three different line formats may be used to describe +an entry depending on the type of change. Tracked entries are printed +in an undefined order; parsers should allow for a mixture of the 3 +line types in any order. + +Ordinary changed entries have the following format: + + 1 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <path> + +Renamed or copied entries have the following format: + + 2 <XY> <sub> <mH> <mI> <mW> <hH> <hI> <X><score> <path><sep><origPath> + + Field Meaning + -------------------------------------------------------- + <XY> A 2 character field containing the staged and +	unstaged XY values described in the short format, +	with unchanged indicated by a "." rather than +	a space. + <sub> A 4 character field describing the submodule state. +	"N..." when the entry is not a submodule. +	"S<c><m><u>" when the entry is a submodule. +	<c> is "C" if the commit changed; otherwise ".". +	<m> is "M" if it has tracked changes; otherwise ".". +	<u> is "U" if there are untracked changes; otherwise ".". + <mH> The octal file mode in HEAD. + <mI> The octal file mode in the index. + <mW> The octal file mode in the worktree. + <hH> The object name in HEAD. + <hI> The object name in the index. + <X><score> The rename or copy score (denoting the percentage +	of similarity between the source and target of the +	move or copy). For example "R100" or "C75". + <path> The pathname. In a renamed/copied entry, this +	is the path in the index and in the working tree. + <sep> When the `-z` option is used, the 2 pathnames are separated +	with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09) +	byte separates them. + <origPath> The pathname in the commit at HEAD. This is only +	present in a renamed/copied entry, and tells +	where the renamed/copied contents came from. + -------------------------------------------------------- + +Unmerged entries have the following format; the first character is +a "u" to distinguish from ordinary changed entries. + + u <xy> <sub> <m1> <m2> <m3> <mW> <h1> <h2> <h3> <path> + + Field Meaning + -------------------------------------------------------- + <XY> A 2 character field describing the conflict type +	as described in the short format. + <sub> A 4 character field describing the submodule state +	as described above. + <m1> The octal file mode in stage 1. + <m2> The octal file mode in stage 2. + <m3> The octal file mode in stage 3. + <mW> The octal file mode in the worktree. + <h1> The object name in stage 1. + <h2> The object name in stage 2. + <h3> The object name in stage 3. + <path> The pathname. + -------------------------------------------------------- + +### Other Items + +Following the tracked entries (and if requested), a series of +lines will be printed for untracked and then ignored items +found in the worktree. + +Untracked items have the following format: + + ? <path> + +Ignored items have the following format: + + ! <path> + +### Pathname Format Notes and -z + +When the `-z` option is given, pathnames are printed as is and +without any quoting and lines are terminated with a NUL (ASCII 0x00) +byte. + +Otherwise, all pathnames will be "C-quoted" if they contain any tab, +linefeed, double quote, or backslash characters. In C-quoting, these +characters will be replaced with the corresponding C-style escape +sequences and the resulting pathname will be double quoted. + +  CONFIGURATION  -------------   
diff --git a/git-unpack-objects.html b/git-unpack-objects.html index 3bcbb5a..3bec0d8 100644 --- a/git-unpack-objects.html +++ b/git-unpack-objects.html 
@@ -807,6 +807,14 @@  Don&#8217;t write objects with broken content or links.   </p>   </dd>  +<dt class="hdlist1">  +--max-input-size=&lt;size&gt;  +</dt>  +<dd>  +<p>  + Die, if the pack is larger than &lt;size&gt;.  +</p>  +</dd>   </dl></div>   </div>   </div>  @@ -820,7 +828,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2015-10-26 16:13:38 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/git-unpack-objects.txt b/git-unpack-objects.txt index 3e887d1..b3de50d 100644 --- a/git-unpack-objects.txt +++ b/git-unpack-objects.txt 
@@ -44,6 +44,9 @@  --strict:: 	Don't write objects with broken content or links.   +--max-input-size=<size>:: +	Die, if the pack is larger than <size>. +  GIT  ---  Part of the linkgit:git[1] suite 
diff --git a/gitk.html b/gitk.html index 452b75e..79f468a 100644 --- a/gitk.html +++ b/gitk.html 
@@ -843,7 +843,7 @@  </dt>   <dd>   <p>  - Mark which side of a symmetric diff a commit is reachable  + Mark which side of a symmetric difference a commit is reachable   from. Commits from the left side are prefixed with a <code>&lt;</code>   symbol and those from the right with a <code>&gt;</code> symbol.   </p>  @@ -1098,7 +1098,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2016-07-13 14:58:50 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/gitk.txt b/gitk.txt index a68d860..e382dd9 100644 --- a/gitk.txt +++ b/gitk.txt 
@@ -70,7 +70,7 @@    --left-right::   -	Mark which side of a symmetric diff a commit is reachable +	Mark which side of a symmetric difference a commit is reachable 	from. Commits from the left side are prefixed with a `<` 	symbol and those from the right with a `>` symbol.   
diff --git a/gitrevisions.html b/gitrevisions.html index 30e9013..cf074ec 100644 --- a/gitrevisions.html +++ b/gitrevisions.html 
@@ -755,9 +755,9 @@  <div class="sectionbody">   <div class="paragraph"><p>Many Git commands take revision parameters as arguments. Depending on   the command, they denote a specific commit or, for commands which  -walk the revision graph (such as <a href="git-log.html">git-log(1)</a>), all commits which can  -be reached from that commit. In the latter case one can also specify a  -range of revisions explicitly.</p></div>  +walk the revision graph (such as <a href="git-log.html">git-log(1)</a>), all commits which are  +reachable from that commit. For commands that walk the revision graph one can  +also specify a range of revisions explicitly.</p></div>   <div class="paragraph"><p>In addition, some Git commands (such as <a href="git-show.html">git-show(1)</a>) also take   revision parameters which denote other objects than commits, e.g. blobs   ("files") or trees ("directories of files").</p></div>  @@ -1109,42 +1109,88 @@  <h2 id="_specifying_ranges">SPECIFYING RANGES</h2>   <div class="sectionbody">   <div class="paragraph"><p>History traversing commands such as <code>git log</code> operate on a set  -of commits, not just a single commit. To these commands,  -specifying a single revision with the notation described in the  -previous section means the set of commits reachable from that  -commit, following the commit ancestry chain.</p></div>  -<div class="paragraph"><p>To exclude commits reachable from a commit, a prefix <em>&#94;</em>  -notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable  -from <em>r2</em> but exclude the ones reachable from <em>r1</em>.</p></div>  -<div class="paragraph"><p>This set operation appears so often that there is a shorthand  -for it. When you have two commits <em>r1</em> and <em>r2</em> (named according  -to the syntax explained in SPECIFYING REVISIONS above), you can ask  -for commits that are reachable from r2 excluding those that are reachable  -from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.</p></div>  -<div class="paragraph"><p>A similar notation <em>r1...r2</em> is called symmetric difference  -of <em>r1</em> and <em>r2</em> and is defined as  -<em>r1 r2 --not $(git merge-base --all r1 r2)</em>.  -It is the set of commits that are reachable from either one of  -<em>r1</em> or <em>r2</em> but not from both.</p></div>  -<div class="paragraph"><p>In these two shorthands, you can omit one end and let it default to HEAD.  +of commits, not just a single commit.</p></div>  +<div class="paragraph"><p>For these commands,  +specifying a single revision, using the notation described in the  +previous section, means the set of commits <code>reachable</code> from the given  +commit.</p></div>  +<div class="paragraph"><p>A commit&#8217;s reachable set is the commit itself and the commits in  +its ancestry chain.</p></div>  +<div class="sect2">  +<h3 id="_commit_exclusions">Commit Exclusions</h3>  +<div class="dlist"><dl>  +<dt class="hdlist1">  +<em>&#94;&lt;rev&gt;</em> (caret) Notation  +</dt>  +<dd>  +<p>  + To exclude commits reachable from a commit, a prefix <em>&#94;</em>  + notation is used. E.g. <em>&#94;r1 r2</em> means commits reachable  + from <em>r2</em> but exclude the ones reachable from <em>r1</em> (i.e. <em>r1</em> and  + its ancestors).  +</p>  +</dd>  +</dl></div>  +</div>  +<div class="sect2">  +<h3 id="_dotted_range_notations">Dotted Range Notations</h3>  +<div class="dlist"><dl>  +<dt class="hdlist1">  +The <em>..</em> (two-dot) Range Notation  +</dt>  +<dd>  +<p>  + The <em>&#94;r1 r2</em> set operation appears so often that there is a shorthand  + for it. When you have two commits <em>r1</em> and <em>r2</em> (named according  + to the syntax explained in SPECIFYING REVISIONS above), you can ask  + for commits that are reachable from r2 excluding those that are reachable  + from r1 by <em>&#94;r1 r2</em> and it can be written as <em>r1..r2</em>.  +</p>  +</dd>  +<dt class="hdlist1">  +The <em>&#8230;</em> (three dot) Symmetric Difference Notation  +</dt>  +<dd>  +<p>  + A similar notation <em>r1...r2</em> is called symmetric difference  + of <em>r1</em> and <em>r2</em> and is defined as  + <em>r1 r2 --not $(git merge-base --all r1 r2)</em>.  + It is the set of commits that are reachable from either one of  + <em>r1</em> (left side) or <em>r2</em> (right side) but not from both.  +</p>  +</dd>  +</dl></div>  +<div class="paragraph"><p>In these two shorthand notations, you can omit one end and let it default to HEAD.   For example, <em>origin..</em> is a shorthand for <em>origin..HEAD</em> and asks "What   did I do since I forked from the origin branch?" Similarly, <em>..origin</em>   is a shorthand for <em>HEAD..origin</em> and asks "What did the origin do since   I forked from them?" Note that <em>..</em> would mean <em>HEAD..HEAD</em> which is an   empty range that is both reachable and unreachable from HEAD.</p></div>  -<div class="paragraph"><p>Two other shorthands for naming a set that is formed by a commit  -and its parent commits exist. The <em>r1&#94;@</em> notation means all  -parents of <em>r1</em>. <em>r1&#94;!</em> includes commit <em>r1</em> but excludes  -all of its parents.</p></div>  -<div class="paragraph"><p>To summarize:</p></div>  +</div>  +<div class="sect2">  +<h3 id="_other_lt_rev_gt_94_parent_shorthand_notations">Other &lt;rev&gt;&#94; Parent Shorthand Notations</h3>  +<div class="paragraph"><p>Two other shorthands exist, particularly useful for merge commits,  +for naming a set that is formed by a commit and its parent commits.</p></div>  +<div class="paragraph"><p>The <em>r1&#94;@</em> notation means all parents of <em>r1</em>.</p></div>  +<div class="paragraph"><p>The <em>r1&#94;!</em> notation includes commit <em>r1</em> but excludes all of its parents.  +By itself, this notation denotes the single commit <em>r1</em>.</p></div>  +<div class="paragraph"><p>While <em>&lt;rev&gt;&#94;&lt;n&gt;</em> was about specifying a single commit parent, these  +two notations consider all its parents. For example you can say  +<em>HEAD&#94;2&#94;@</em>, however you cannot say <em>HEAD&#94;@&#94;2</em>.</p></div>  +</div>  +</div>  +</div>  +<div class="sect1">  +<h2 id="_revision_range_summary">Revision Range Summary</h2>  +<div class="sectionbody">   <div class="dlist"><dl>   <dt class="hdlist1">   <em>&lt;rev&gt;</em>   </dt>   <dd>   <p>  - Include commits that are reachable from (i.e. ancestors of)  - &lt;rev&gt;.  + Include commits that are reachable from &lt;rev&gt; (i.e. &lt;rev&gt; and its  + ancestors).   </p>   </dd>   <dt class="hdlist1">  @@ -1152,8 +1198,8 @@  </dt>   <dd>   <p>  - Exclude commits that are reachable from (i.e. ancestors of)  - &lt;rev&gt;.  + Exclude commits that are reachable from &lt;rev&gt; (i.e. &lt;rev&gt; and its  + ancestors).   </p>   </dd>   <dt class="hdlist1">  @@ -1197,20 +1243,31 @@  </p>   </dd>   </dl></div>  -<div class="paragraph"><p>Here are a handful of examples:</p></div>  +<div class="paragraph"><p>Here are a handful of examples using the Loeliger illustration above,  +with each step in the notation&#8217;s expansion and selection carefully  +spelt out:</p></div>   <div class="literalblock">   <div class="content">  -<pre><code>D G H D  -D F G H I J D F  -^G D H D  -^D B E I J F B  -B..C C  -B...C G H D E B C  -^D B C E I J F B C  -C I J F C  -C^@ I J F  -C^! C  -F^! D G H D F</code></pre>  +<pre><code>Args Expanded arguments Selected commits  +D G H D  +D F G H I J D F  +^G D H D  +^D B E I J F B  +^D B C E I J F B C  +C I J F C  +B..C = ^B C C  +B...C = B ^F C G H D E B C  +C^@ = C^1  + = F I J F  +B^@ = B^1 B^2 B^3  + = D E F D G H E F I J  +C^! = C ^C^@  + = C ^C^1  + = C ^F C  +B^! = B ^B^@  + = B ^B^1 ^B^2 ^B^3  + = B ^D ^E ^F B  +F^! D = F ^I ^J D G H D F</code></pre>   </div></div>   </div>   </div>  @@ -1230,7 +1287,7 @@  <div id="footnotes"><hr /></div>   <div id="footer">   <div id="footer-text">  -Last updated 2015-10-29 14:44:28 PDT  +Last updated 2016-09-12 17:53:34 PDT   </div>   </div>   </body>  
diff --git a/gitrevisions.txt b/gitrevisions.txt index e903eb7..27dec5b 100644 --- a/gitrevisions.txt +++ b/gitrevisions.txt 
@@ -15,9 +15,9 @@    Many Git commands take revision parameters as arguments. Depending on  the command, they denote a specific commit or, for commands which -walk the revision graph (such as linkgit:git-log[1]), all commits which can -be reached from that commit. In the latter case one can also specify a -range of revisions explicitly. +walk the revision graph (such as linkgit:git-log[1]), all commits which are +reachable from that commit. For commands that walk the revision graph one can +also specify a range of revisions explicitly.    In addition, some Git commands (such as linkgit:git-show[1]) also take  revision parameters which denote other objects than commits, e.g. blobs 
diff --git a/pretty-formats.txt b/pretty-formats.txt index b95d67e..a942d57 100644 --- a/pretty-formats.txt +++ b/pretty-formats.txt 
@@ -172,7 +172,7 @@  respecting the `auto` settings of the former if we are going to a  terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring  on the next placeholders until the color is switched again. -- '%m': left, right or boundary mark +- '%m': left (`<`), right (`>`) or boundary (`-`) mark  - '%n': newline  - '%%': a raw '%'  - '%x00': print a byte from a hex code 
diff --git a/rev-list-options.txt b/rev-list-options.txt index a779c9d..7e462d3 100644 --- a/rev-list-options.txt +++ b/rev-list-options.txt 
@@ -225,7 +225,7 @@    --left-only::  --right-only:: -	List only commits on the respective side of a symmetric range, +	List only commits on the respective side of a symmetric difference, 	i.e. only those which would be marked `<` resp. `>` by 	`--left-right`.  + @@ -796,7 +796,7 @@  endif::git-rev-list[]    --left-right:: -	Mark which side of a symmetric diff a commit is reachable from. +	Mark which side of a symmetric difference a commit is reachable from. 	Commits from the left side are prefixed with `<` and those from 	the right with `>`. If combined with `--boundary`, those 	commits are prefixed with `-`. 
diff --git a/revisions.txt b/revisions.txt index abae363..4bed5b1 100644 --- a/revisions.txt +++ b/revisions.txt 
@@ -237,48 +237,74 @@  -----------------    History traversing commands such as `git log` operate on a set -of commits, not just a single commit. To these commands, -specifying a single revision with the notation described in the -previous section means the set of commits reachable from that -commit, following the commit ancestry chain. +of commits, not just a single commit.   -To exclude commits reachable from a commit, a prefix '{caret}' -notation is used. E.g. '{caret}r1 r2' means commits reachable -from 'r2' but exclude the ones reachable from 'r1'. +For these commands, +specifying a single revision, using the notation described in the +previous section, means the set of commits `reachable` from the given +commit.   -This set operation appears so often that there is a shorthand -for it. When you have two commits 'r1' and 'r2' (named according -to the syntax explained in SPECIFYING REVISIONS above), you can ask -for commits that are reachable from r2 excluding those that are reachable -from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'. +A commit's reachable set is the commit itself and the commits in +its ancestry chain.   -A similar notation 'r1\...r2' is called symmetric difference -of 'r1' and 'r2' and is defined as -'r1 r2 --not $(git merge-base --all r1 r2)'. -It is the set of commits that are reachable from either one of -'r1' or 'r2' but not from both.   -In these two shorthands, you can omit one end and let it default to HEAD. +Commit Exclusions +~~~~~~~~~~~~~~~~~ + +'{caret}<rev>' (caret) Notation:: + To exclude commits reachable from a commit, a prefix '{caret}' + notation is used. E.g. '{caret}r1 r2' means commits reachable + from 'r2' but exclude the ones reachable from 'r1' (i.e. 'r1' and + its ancestors). + +Dotted Range Notations +~~~~~~~~~~~~~~~~~~~~~~ + +The '..' (two-dot) Range Notation:: + The '{caret}r1 r2' set operation appears so often that there is a shorthand + for it. When you have two commits 'r1' and 'r2' (named according + to the syntax explained in SPECIFYING REVISIONS above), you can ask + for commits that are reachable from r2 excluding those that are reachable + from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'. + +The '...' (three dot) Symmetric Difference Notation:: + A similar notation 'r1\...r2' is called symmetric difference + of 'r1' and 'r2' and is defined as + 'r1 r2 --not $(git merge-base --all r1 r2)'. + It is the set of commits that are reachable from either one of + 'r1' (left side) or 'r2' (right side) but not from both. + +In these two shorthand notations, you can omit one end and let it default to HEAD.  For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What  did I do since I forked from the origin branch?" Similarly, '..origin'  is a shorthand for 'HEAD..origin' and asks "What did the origin do since  I forked from them?" Note that '..' would mean 'HEAD..HEAD' which is an  empty range that is both reachable and unreachable from HEAD.   -Two other shorthands for naming a set that is formed by a commit -and its parent commits exist. The 'r1{caret}@' notation means all -parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes -all of its parents. +Other <rev>{caret} Parent Shorthand Notations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Two other shorthands exist, particularly useful for merge commits, +for naming a set that is formed by a commit and its parent commits.   -To summarize: +The 'r1{caret}@' notation means all parents of 'r1'. + +The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents. +By itself, this notation denotes the single commit 'r1'. + +While '<rev>{caret}<n>' was about specifying a single commit parent, these +two notations consider all its parents. For example you can say +'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'. + +Revision Range Summary +----------------------    '<rev>':: -	Include commits that are reachable from (i.e. ancestors of) -	<rev>. +	Include commits that are reachable from <rev> (i.e. <rev> and its +	ancestors).    '{caret}<rev>':: -	Exclude commits that are reachable from (i.e. ancestors of) -	<rev>. +	Exclude commits that are reachable from <rev> (i.e. <rev> and its +	ancestors).    '<rev1>..<rev2>':: 	Include commits that are reachable from <rev2> but exclude @@ -300,16 +326,27 @@  as giving commit '<rev>' and then all its parents prefixed with  '{caret}' to exclude them (and their ancestors).   -Here are a handful of examples: +Here are a handful of examples using the Loeliger illustration above, +with each step in the notation's expansion and selection carefully +spelt out:   - D G H D - D F G H I J D F - ^G D H D - ^D B E I J F B - B..C C - B...C G H D E B C - ^D B C E I J F B C - C I J F C - C^@ I J F - C^! C - F^! D G H D F + Args Expanded arguments Selected commits + D G H D + D F G H I J D F + ^G D H D + ^D B E I J F B + ^D B C E I J F B C + C I J F C + B..C = ^B C C + B...C = B ^F C G H D E B C + C^@ = C^1 + = F I J F + B^@ = B^1 B^2 B^3 + = D E F D G H E F I J + C^! = C ^C^@ + = C ^C^1 + = C ^F C + B^! = B ^B^@ + = B ^B^1 ^B^2 ^B^3 + = B ^D ^E ^F B + F^! D = F ^I ^J D G H D F